import java.io.Serializable;

/**
 * 算式bean,产生一个算式就是new一个算式bean，而两位算数、符号以及结果都为成员属性
 *
 * @author Li Sipeng
 * @version 4.0 on   2022-11-12 22:50
 */
public class BinaryOperation extends Operation implements Serializable {
//    private static final long serialVersionUID = 124423232L;
    /**
     * 无参构造，随机生成加减算式
     */
    public BinaryOperation (){
        this.setOperator(generateOpator());   //随机生成加减符号
        if(this.getOperator() == '+'){
            this.generateAddOperand();  //产生一个加法算式
        }else{
            this.generateSubOperand();  //产生一个减法算式
        }
    }
    /**
     * 重写随机生成符号，可以是+-
     * @return 返回运算符+ or -
     * */
    @Override
    public char generateOpator() {
        double num = Math.random();
        if (Math.round(num) == 0){
            return '+';
        }else{
            return '-';
        }
    }
    }

/**
 * 算式bean,产生一个加法算式就是new一个算式bean，而两位算数、符号以及结果都为成员属性
 * */
class AddBinaryOperation extends Operation  implements Serializable{
    public AddBinaryOperation(){
            this.setOperator('+');
            this.generateAddOperand();
    }

    @Override
    public char generateOpator() {
        return 0;
    }
}

/**
 * 算式bean,产生一个减法算式就是new一个算式bean，而两位算数、符号以及结果都为成员属性
 * */
class SubBinaryOperation extends Operation  implements Serializable{
    public SubBinaryOperation(){
        this.setOperator('-');
        this.generateSubOperand();
    }

    @Override
    public char generateOpator() {
        return 0;
    }
}
